package net.sf.calibur.engine;

import java.lang.reflect.ParameterizedType;

import net.sf.calibur.engine.task.Task;


/**
 * 用Event的class作为路由条件的任务类型。
 * @author gaobo
 *
 * @param <T>
 */
public abstract class RouteByEventClassTask<T extends Event> extends Task {
	public RouteByEventClassTask() {
		super(null);
		setEventId((((ParameterizedType) getClass().getGenericSuperclass())
				.getActualTypeArguments()[0]));
	}

	@SuppressWarnings("unchecked")
	public T castEvent(Event event) {
		return (T) event;
	}
}